package com.dp1.pucp.Seguridad.Controlador;

import com.dp1.pucp.Modelo.Clases.Usuario;
import com.dp1.pucp.Seguridad.DAO.*;
import com.dp1.pucp.Seguridad.Vista.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

public class MantUsuarioControlador {

    private UsuarioDAO usuarioDAO;
    private MantUsuarioGUI2 mantenimientoUsuarioView;
    private Usuario user;
    private ArrayList<Usuario> lstUsuario;
    private ArrayList<String> lstEstado;

    public MantUsuarioControlador(UsuarioDAO dao, MantUsuarioGUI2 v) {
        usuarioDAO = dao;
        mantenimientoUsuarioView = v;

        llenarEstadoCombo();

        mantenimientoUsuarioView.addBuscarListener(new listarUsuarios());
        mantenimientoUsuarioView.addEditarListener(new editarUsuarioListener(this));
        mantenimientoUsuarioView.addNuevoListener(new crearUsuarioListener(this));
        mantenimientoUsuarioView.addLimpiarListener(new limpiarListener());
//        mantenimientoUsuarioView.addELiminarListener(new eliminarListener());
//        mantenimientoUsuarioView.addActivarListener(new activarListener());

    }

    private void llenarEstadoCombo() {
        lstEstado = usuarioDAO.listarEstado();
        mantenimientoUsuarioView.llenaComboEstado(lstEstado);
    }

    public void listarResultados() {
        lstUsuario = usuarioDAO.listarUsuario();
        mantenimientoUsuarioView.realizarFiltro(lstUsuario);
    }

    //CREACION DE LAS CLASES DE LOS LISTENERS
    class listarUsuarios implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            listarResultados();
        }
    }

    class editarUsuarioListener implements ActionListener {

        private UsuarioControlador buc;

        public editarUsuarioListener(MantUsuarioControlador buscarusr) {
            //buc=buscarusr;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            int sel = mantenimientoUsuarioView.getFilaSel();
            if (sel != -1) {
                UsuarioGUI p = new UsuarioGUI(mantenimientoUsuarioView.getPadre(), true);
                Usuario u = lstUsuario.get(sel);
                UsuarioControlador c = new UsuarioControlador(usuarioDAO, p, buc, u);
                p.setVisible(true);
            }
        }
    }

    class crearUsuarioListener implements ActionListener {

        private UsuarioControlador buc;

        public crearUsuarioListener(MantUsuarioControlador empleado) {
            //buc=empleado;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            UsuarioGUI p = new UsuarioGUI(mantenimientoUsuarioView.getPadre(), true);
            UsuarioControlador c = new UsuarioControlador(usuarioDAO, p, buc, null);
            p.setVisible(true);
        }
    }

    class limpiarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            mantenimientoUsuarioView.LimpiarDatos();
        }
    }
}
